1.1 DartVM 介绍
DartVM 是用于原生执行 Dart 代码的组件集合。
"Dart VM"这个名字具有历史意义。Dart VM 在某种意义上是一个虚拟机,因为它为高级编程语言提供了一个执行环境,但这并不意味着 Dart 在 Dart VM 上执行时总是被解释或 JIT 编译。例如,Dart 代码可以使用 Dart VM 的 AOT(提前编译)管道编译成机器码,然后在一个精简版的 Dart VM(称为预编译运行时)中执行,这个精简版不包含任何编译器组件,也无法动态加载 Dart 源代码。
DartVM 包含以下内容:
- 运行时系统(Runtime System)
- 对象模型(Object Model)
- 垃圾收集(Garbage Collection)
- 快照(Snapshots)
- 核心库的原生方法(Core libraries native methods)
- 开发体验服务组件
- 调试(Debugging)
- 分析(Profiling)
- 热重载(Hot-reload)
- 编译管道
- Just-in-Time (JIT)
- Ahead-of-Time (AOT)
- 解释器(Interpreter)
- ARM 模拟器
关键概念
-
Dart 代码(包括应用程序代码和 Flutter Framework)通过 JIT/AOT 中称为 Kernel AST 的中间表示转换为机器语言(原生代码)。
-
运行 Dart 代码有两种方法:从源代码编译和从快照创建。
-
在发布模式下运行时,AOT 编译发生在 Dart VM 的 AOT 管道内。编译后的机器代码在 Dart VM 上的轻量级运行时(JIT 管道的子集)上执行,称为预编译运行时。换句话说,Dart VM 提供了多种功能,而不仅仅是一个 VM。
Web 编译
Dart 支持编译到 JavaScript,在 Web 运行,涉及到编译器:
本文作者:Maeiee
本文链接:1.1 DartVM 介绍
版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!
喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!